package com.baidu.mpks.permission.dao;

import com.baidu.mpks.permission.domain.PermissionData;
import com.baidu.mpks.permission.domain.PermissionDataRole;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

public interface PermissionDataRoleDao {

    int add(PermissionDataRole permissionDataRole);

    int batchAdd(List<PermissionDataRole> permissionDataRoleList);

    void deleteByRoleId(String roleId);

    void deleteByRoleIds(List<String> roleIds);

    void deleteByDataIdAndIdType(String dataId, String idType);

    void deleteByDataIdsAndOpType(List<String> dataIds, String op);

    void deleteByDataIdAndOpType(String dataId, String op);

    void batchDeleteByDataId(@Param("dataIds") List<String> dataIds);

    void deleteByRoleIdsAndDataIdsAndIdType(Set<String> dataIds, Set<String> roleIds, String idType);

    void deleteByRoleIdsAndDataIdAndIdType(String dataId, Set<String> roleIds, String idType);

    Set<PermissionDataRole> getOpenDataByIdTypes(@Param("idTypes") List<String> idTypes);

    Set<PermissionDataRole> getByRoleIdAndIdType(String roleId, String idType);

    Set<PermissionDataRole> getByRoleId(String roleId);

    List<PermissionDataRole> getByRoleIdsAndIdType(List<String> roleIds, String idType);

    List<String> getDataIdByRoleIdAndIdType(String roleId, String idType);

    List<PermissionDataRole> getByDataIdAndIdType(String dataId, String idType);

    List<PermissionDataRole> getByDataIdsAndIdType(Set<String> dataIds, String idType);

    List<PermissionData> getRoleDataAndUserDataByRoleIdsAndUserId(List<String> roleIds, String userId);

    Set<Integer> getRoleIdsByDataIdAndIdType(String dataId, String idType);

    Set<Integer> getRoleIdsByDataIdsAndIdType(Set<String> dataIds, String idType);

    List<String> getDataIdByIdType(String idType);

    List<PermissionDataRole> getByIdType(String idType);

    Set<PermissionDataRole> getOpenDataId();
}
